#include "../../include/command/CmderFactory.hpp"  // 包含类声明
#include "../../include/command/ConcreteCommands.hpp" // 包含具体命令类（MoveCommand等）
#include <stdexcept>         // 必须包含：std::invalid_argument的定义

// 关键修正：添加类作用域限定符 CmderFactory::
std::unique_ptr<ICommand> CmderFactory::createCommand(char cmdChar) {
    switch (cmdChar) {
        case 'M': return std::make_unique<MoveCommand>();
        case 'L': return std::make_unique<TurnLeftCommand>();
        case 'R': return std::make_unique<TurnRightCommand>();
        case 'F': return std::make_unique<FastCommand>();
        case 'B': return std::make_unique<ReverseCommand>();
        case 'Z': return std::make_unique<TurnRoundCommand>(); // 对应TR指令
        default:
            // 抛出无效指令异常（包含具体错误字符，便于调试）
            throw std::invalid_argument("无效的指令字符: " + std::string(1, cmdChar));
    }
}